package main

import "fmt"

func deferA(){
    fmt.Println("--A--")
}

func deferB(){
    fmt.Println("--B--")
}

func deferC(){
    fmt.Println("--C--")
}

func main(){
    // 输出： --C--  --B--   --A--
    defer deferA()
    defer deferB()
    defer deferC()

    // 输出： --returnFunc--    --deferFunc--
    deferAndReturn()
}

func deferAndReturn() int {
    defer deferFunc()
    return returnFunc()
}

func deferFunc() int {
    fmt.Println("--deferFunc--")
    return 0
}

func returnFunc() int {
    fmt.Println("--returnFunc--")
    return 0
}
